﻿using ConmonDateModel;
using ConmonDateModel.ResponseBase;
using DateDBControl;
using DateDBControl.Model;
using DateDBControl.Redies;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.StaticFiles;
using Microsoft.Extensions.Hosting;
using MyLogProject;
using Newtonsoft.Json;
using ServiceControl;
using System;
using System.Net;
using System.Net.Http.Headers;
using System.Text;
using System.Web;

namespace MyProjectControlApplication.Controllers
{      
    //1、POST 用于新建资源，服务端在指定的URI 上创建一个新的对象，将新资源的地址作为响应消息的一部分返回；       
    //2、PUT 用于更新 URI 上的一个资源，如果服务端允许，PUT 也可以用于新建一个资源；
    //3、GET 用于获取 URI 资源的进行展示，GET 操作不应对服务端有任何影响；
    //4、DELETE 用于删除指定的URI 资源。
    [Route("api/[action]")]
    [ApiController]
    [ApiExplorerSettings(GroupName = nameof(ApiVersionInfo.v5))]
    public class AppDateController : ControllerBase
    {
     
   
        /// <summary>
        /// 构造
        /// </summary>
        /// <param name="_DataServiceControl"></param>
        public AppDateController()
        {
           
           
        }

        #region
     


       



     

    

   

  

   

        #endregion



        #region

        /// <summary>
        /// 上传版本文件
        /// </summary>
        /// <param name="files">要上传的文件</param>
        /// <param name="_deviceid">设备唯一编码</param>
        /// <param name="_version_first">版本号首位</param>
        /// <param name="_version_second">版本号第二位</param>
        /// <param name="_version_three">版本号第三位</param>
        /// <param name="_version_four">版本号第四位</param>
        /// <returns></returns>
        [HttpPost("UploadFileAsync")]
        public async Task<ResponseBody> UploadFileAsync(IFormFile files,string _deviceid,int _version_first, int _version_second, int _version_three,int _version_four)
        {
            var itemResult=new ResponseBody();
            //try
            //{
            //    var midlResult = DataServiceControl.JudgeCurrentVersion(_version_first, _version_second, _version_three, _version_four);
            //    if (midlResult.Code!= ErrorCode.OK) 
            //    {
            //      return midlResult;
            //    }

            //    string _fileName = files.FileName;
            //    string ItemFloder = "Upload/Version/"+ _deviceid+"/";
            //    string _FloderPath = AppDomain.CurrentDomain.BaseDirectory + ItemFloder;
            //    if (!Directory.Exists(_FloderPath)) 
            //    {
            //        Directory.CreateDirectory(_FloderPath);
            //    }
              

            //    string _FilePath = ItemFloder + _fileName;

            //    string _CopyFilePath = _FloderPath + _fileName;
            //    if (files.Length > 0)
            //    {                 
            //        using (var stream = new FileStream(_CopyFilePath, FileMode.Create))
            //        {
            //            await files.CopyToAsync(stream); //将文件流复制到指定位置
            //        }
            //    }

            //    itemResult=DataServiceControl.ToUploadVersionFile( _version_first, _version_second, _version_three, _version_four, _FilePath, _fileName);

            //}
            //catch (Exception ex)
            //{
            //    itemResult.Code = ErrorCode.CommonError;
            //    itemResult.Data = ex.Message;
            //    LogManager.WriteLog(LogTypeEnum.Exception, "UploadFileAsync", ex.Message);
            //}

            return itemResult;
        }






        /// <summary>
        /// 
        /// </summary>
        /// <param name="_deviceid">设备唯一编码</param>
        /// <param name="_FileName">文件名</param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult DownloadLog(string _deviceid,string _FileName,string _FilePath)
        {
            return null;
            //try
            //{
            //    FileStreamResult result = null;
            //    ResponseBody itemResult = DataServiceControl.GetTargetLogs(_deviceid,_FileName);
            //    if (itemResult.Data != null)
            //    {
            //        List<LogFileDbModel> itemList = JsonConvert.DeserializeObject<List<LogFileDbModel>>(itemResult.Data.ToString());
            //        if (itemList.Count == 0)
            //        {
            //            return result;
            //        }

            //        LogFileDbModel ItemFile = itemList.Where(p=>p.filepath== _FilePath).FirstOrDefault();
            //        if (ItemFile==null) 
            //        {
            //            return result;
            //        }
            //        // 服务器文件路径
            //        string _filesuffix = "." + ItemFile.filename.Split('.')[1];
            //        //文件的服务器地址
            //        string filePath = AppDomain.CurrentDomain.BaseDirectory +"\\"+ ItemFile.filepath;
            //        //确定模板文件是否存在
            //        if (!System.IO.File.Exists(filePath))
            //        {
            //            return BadRequest("服务端模板文件不存在！");
            //        }
            //        //返回流
            //        FileInfo fileMetaInfo = new System.IO.FileInfo(filePath);
            //        // 创建文件读取流
            //        FileStream fileStream = System.IO.File.OpenRead(filePath);
            //        // 根据文件后缀获取文件的ContentType
            //        var fileExtensionContentTypeProvider = new FileExtensionContentTypeProvider();
            //        // 返回文件contentType类型
            //        var contentType = fileExtensionContentTypeProvider.Mappings[_filesuffix];
            //        result = File(fileStream, contentType, fileMetaInfo.Name);
            //    }


            //    return result;
            //}
            //catch (Exception ex)
            //{
            //    return BadRequest(ex);
            //}
        }





        /// <summary>
        /// 获取所有版本文件
        /// </summary>
        /// <param name="_deviceid">设备唯一编码</param>
        /// <returns></returns>
        [HttpGet]
        public ResponseBody GetAllFileVersion(string _deviceid)
        {
            //var itemResult = DataServiceControl.GetAllFileVersion(_deviceid);
            //return itemResult;
            return null;
        }



        /// <summary>
        /// 版本文件下载
        /// </summary>
        /// <param name="_deviceid">设备唯一码</param>
        /// <param name="_fileuuid">版本uuid</param> 
        /// <returns></returns>
        [HttpGet]
        public IActionResult DownloadTemplate(string _deviceid, string _fileuuid)
        {
            return null;
            //try
            //{
            //    FileStreamResult result = null;
            //    ResponseBody itemResult=DataServiceControl.GetTargetFileVersion(_deviceid, _fileuuid);
            //    if (itemResult.Data!=null) 
            //    {
            //        List<FileDbModel> itemList = JsonConvert.DeserializeObject<List<FileDbModel>>(itemResult.Data.ToString());
            //        if (itemList.Count == 0)
            //        {
            //            return result;
            //        }
            //        FileDbModel ItemFile = itemList.FirstOrDefault();

            //        // 服务器文件路径
            //        string _filesuffix= "."+ItemFile.filename.Split('.')[1];
            //        //文件的服务器地址
            //        string filePath = AppDomain.CurrentDomain.BaseDirectory + ItemFile.filepath;
            //        //确定模板文件是否存在
            //        if (!System.IO.File.Exists(filePath))
            //        {
            //            return BadRequest("服务端模板文件不存在！");
            //        }
            //        //返回流
            //        FileInfo fileMetaInfo = new System.IO.FileInfo(filePath);
            //        // 创建文件读取流
            //        FileStream fileStream = System.IO.File.OpenRead(filePath);
            //        // 根据文件后缀获取文件的ContentType
            //        var fileExtensionContentTypeProvider = new FileExtensionContentTypeProvider();
            //        // 返回文件contentType类型
            //        var contentType = fileExtensionContentTypeProvider.Mappings[_filesuffix];
            //        result = File(fileStream, contentType, fileMetaInfo.Name);
            //    }

             
            //    return result;
            //}
            //catch (Exception ex)
            //{
            //    return BadRequest(ex);
            //}
        }
        
        #endregion

     
    }
}
